﻿using System.Collections.Generic;
using System.Collections.Specialized;
using System.IO;
using System;
using System.Threading;
using System.ComponentModel;
using BrainTechLLC.ThreadSafeObjects;

namespace BrainTechLLC
{
    public interface IAssociatedIDCollection : ISupportsAdd<long>, ISupportsRemove<long>, INotifyCollectionChanged
    {
        List<T> ReadItems<T>() where T : class, IAssociatedID;
        List<T> ReadItems<T>(Func<T, bool> match) where T : class, IAssociatedID;
        T FindFirst<T>(Func<T, bool> match) where T : class, IAssociatedID;
        List<long> AllIDs { get; }
        bool AddMultiple(IList<long> items);
    }
}